﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using Crosland.Automotriz.Seguridad.ControlExeption;
using Crosland.Automotriz.Logic.Linq;
using DevExpress.Web.ASPxGridView;
using System.Drawing;

namespace Crosland.Automotriz.Web.Canibalizacion
{
    public partial class wFrmCanibalizacionMovimiento : System.Web.UI.Page
    {
        private int intIdNegocio = Convert.ToInt32(ConfigurationManager.AppSettings["Negocio"]);

        private iFacadeCanibalizacion facedeCanibalizacion = null;
        private static String strMsg, strTitulo;

        protected void Page_Load(object sender, EventArgs e)
        {


            if (Page.IsPostBack == false)
            {

                this.ListarCanibalizacion();
                if (Session["index"] != null)
                {
                    grdListadoCanibalizacionMov.FocusedRowIndex = Convert.ToInt32(Session["index"]);
                }
                if (Session["boolGrabacion"] != null)
                {
                    strTitulo = (Convert.ToBoolean(Session["boolGrabacion"]) == true) ? "Grabacion Exitosa" : "ERROR";
                    strMsg = Session["strMsg"].ToString();
                    Session["boolGrabacion"] = null;
                    lblmsj.Text = strMsg;
                    popupmsj.HeaderText = strTitulo;
                    popupmsj.ShowOnPageLoad = true;
                }

                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;

            }
        }



        private void ListarCanibalizacion()
        {

            facedeCanibalizacion = new FacadeCanibalizacion();

            try
            {
                grdListadoCanibalizacionMov.DataSource = facedeCanibalizacion.ListarCanibalizacionMovimiento();
                grdListadoCanibalizacionMov.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListarCab");
                MensajesError(ex.Message, ex, "ListarCab");
            }



        }


        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }

        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }



        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Session["operacion"] = "C";
            Response.Redirect("~/Canibalizacion/wFrmCanibalizacionMovimientoActualizar.aspx?id=" + intIdNegocio);
        }

        protected void grdListadoCanibalizacionMov_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.ListarCanibalizacion();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Session["index"] = null;
            Session["operacion"] = null;
            Session["idCab"] = null;
            Response.Redirect("~/Seguridad/wFrmDefault.aspx?id=" + intIdNegocio);
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            if (grdListadoCanibalizacionMov.FocusedRowIndex == -1)
            {
                lblmsj.Text = "Seleccione un registr a modificar";
                popupmsj.ShowOnPageLoad = true;
                return;
            }
            int idCab = Convert.ToInt32(grdListadoCanibalizacionMov.GetRowValues(grdListadoCanibalizacionMov.FocusedRowIndex, "ID_LOG_CANIB_MOV_CAB"));
            Session["idCab"] = idCab;
            Session["operacion"] = "M";
            Session["ES_ANULADO"] = Convert.ToInt32(grdListadoCanibalizacionMov.GetRowValues(grdListadoCanibalizacionMov.FocusedRowIndex, "ES_ANULADO"));
            Session["index"] = grdListadoCanibalizacionMov.FocusedRowIndex;
            Response.Redirect("~/Canibalizacion/wFrmCanibalizacionMovimientoActualizar.aspx?id=" + intIdNegocio);
        }

        protected void btnPopAceptar_Click(object sender, EventArgs e)
        {
            this.AnularRegistro();
        }

        private void AnularRegistro()
        {

            try
            {
                clsT_Log_Canibalizacion_Movimiento_CabLogic canibalizacion_movi = new clsT_Log_Canibalizacion_Movimiento_CabLogic();
                int intIndex = grdListadoCanibalizacionMov.FocusedRowIndex;
                bool resul = canibalizacion_movi.Anular(Convert.ToInt32(grdListadoCanibalizacionMov.GetRowValues(intIndex, "ID_LOG_CANIB_MOV_CAB")));
                if (resul)
                {
                    PopupMsjConfirmacion.ShowOnPageLoad = false;
                    lblmsj.Text = "Se anuló correctamente";
                    popupmsj.ShowOnPageLoad = true;
                    this.ListarCanibalizacion();
                    return;
                }

            }
            catch (Exception ex)
            {

                GuardarExceptionLog(ex.Message, ex, "AnularRegistro");
                MensajesError(ex.Message, ex, "AnularRegistro");
            }
        }

        protected void btnAnular_Click(object sender, EventArgs e)
        {
            int intIndex = grdListadoCanibalizacionMov.FocusedRowIndex;

            if (intIndex == -1)
            {
                lblmsj.Text = "Seleccione un archivo";
                popupmsj.ShowOnPageLoad = true;

            }
            else
            {
                PopupMsjConfirmacion.ShowOnPageLoad = true;

            }
        }

        protected void grdListadoCanibalizacionMov_HtmlRowPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e)
        {
            if (e.RowType != GridViewRowType.Data) return;
            int ind_estado = e.GetValue("ES_ANULADO") == null ? 0 : Convert.ToInt32(e.GetValue("ES_ANULADO"));
            if (ind_estado == 1)
            {
                e.Row.BackColor = Color.FromArgb(0xC2, 0xFC, 0x45, 0x45);
                e.Row.ForeColor = Color.White;
            }
        }

    }
}